Managing a virtual computer resource

ABSTRACT

Managing a virtual computer resource on at least one virtual machine. The managing of the virtual computer resource on the at least one virtual machine is by controlling execution of the virtual computer resource on the at least one virtual machine by a virtual machine instance, such as a firmware facility, of a trusted part of a computer system. The virtual machine instance is unique in the computer system.

PRIOR FOREIGN APPLICATION

This application claims priority from United Kingdom patent applicationnumber 1217077.5 filed Sep. 25, 2012, which is hereby incorporatedherein by reference in its entirety.

BACKGROUND

One or more aspects of the present invention relate in general to dataprocessing systems, and in particular, to managing a virtual computerresource on at least one virtual machine.

In today's information technology infrastructure, many server systemssupport logical partitioning. Many logical partitions of a logicallypartitioned system execute operating systems on which applications aredeployed. Such applications communicate with applications within thesame partition, within the same logically partitioned system, withdevices coupled to the logically partitioned system, and with otherapplications on other systems coupled to the logically partitionedsystem. The communication protocols required to support suchcommunication must support connection oriented, in-order, reliable, andflow-controlled data delivery. Implementing protocols to meet theserequirements leads to resource intensive implementation which requiresincreased performance. Delivering such performance requiressophisticated and expensive communication hardware. The requirementsstill remain in place even in virtualized server environments. Anotherchallenge is to secure the communication protocols against surveyingattacks of the communication lines or ensuring the availability of thecounterpart of the communication.

US 2011/0093870 A1, hereby incorporated herein by reference in itsentirety, describes a method in a data processing system forcommunicating between a plurality of applications. A request is receivedfrom an originating application to send data to a destinationapplication. Further a request is sent to identify a location of thedestination application to a virtualization management mechanism. It isdetermined whether the location of the destination application is asecond logical partition in the plurality of logical partitions of thelogically partitioned data processing system in response to receiving aresponse from the virtualization management mechanism. A bypass protocolis used to send the request from the originating application to thedestination application in response to the location being the secondlogical partition.

A mechanism is provided for a high performance and resource efficientcommunication among a plurality of applications running on logicalpartitions of a logically partitioned system. The performance of thecommunication is increased by providing a high through-put with a lowlatency. By increasing the throughput and decreasing latency, thelogically partitioned system reduces the processing requirements of thelogically partitioned system's components such as processing units,memory, input/output bandwidth, or the like. The mechanism comprises abypass transport protocol for communicating between logical partitions.Communication software within each operation system executing on thelogical partition determines when the bypass transport protocol is to bedeployed. Therefore, application programming interfaces (API) aremaintained thus supporting existing applications without change andsupporting connection oriented, reliable, in-order, and flow-controlleddata transfers.

US 2011/0185062 A1, hereby incorporated herein by reference in itsentirety, describes a qualitative resource assignment wizard whichreceives qualitative information for a logical partition (LPAR) andcalculates computer resource assignments for the LPAR based on thequalitative information and a set of conversion functions. For example,the qualitative resource assignment wizard may calculate a processingunit assignment, a memory assignment, and an I/O slot assignment for theLPAR. The qualitative information may be input by a user, for example,utilizing a graphical user interface (GUI). Conversion functions arecalculated during a training phase, in which a user periodicallyprovides qualitative information while resource usage data is gathered.The wizard may reside in a hardware management console (HMC) or otheradministrative console and/or may be a component of a hypervisor orother partition management code. Software code associated with thewizard may be provided by a network server application to a clientsystem for enabling a user to remotely input the qualitativeinformation.

BRIEF SUMMARY

In one aspect, a method is provided for managing a virtual computerresource, on at least one virtual machine, in order to enable anefficient and secure way of administrating licensing managementinformation.

Another aspect is to provide a system for managing a virtual computerresource on at least one virtual machine, comprising an efficient andsecure way of administrating licensing management information.

Objectives are achieved by the features of aspects of the independentclaims. The other claims, the drawings and the specification discloseembodiments of aspects of the invention.

According to one aspect, a capability is provided for managing a virtualcomputer resource on at least one virtual machine. This managementservice can be achieved by controlling execution of the virtual computerresource on the at least one virtual machine by a virtual machineinstance, preferably a firmware facility, of a trusted part of acomputer system, the virtual machine instance being unique in thecomputer system. A virtual computer resource in this sense covers notonly software aspects, as for example a software license, but alsohardware resources, as memories, processors or the like, as will beoutlined in more detail herein.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

One or more aspects of the present invention together with the objectsand advantages may best be understood from the following detaileddescription of the embodiments, but not restricted to the embodiments,wherein is shown in:

FIG. 1 a general overview of a license management system with threevirtual machines according to an example embodiment;

FIG. 2 a detailed overview of a general license management system basedon encrypted records;

FIG. 3 one example of adding virtual computer resources according to theexample embodiment of FIG. 1;

FIG. 4 one example of releasing virtual computer resources according tothe example embodiment of FIG. 1;

FIG. 5 another example of adding virtual computer resources according tothe example embodiment of FIG. 1;

FIG. 6 one example of sending accounting information about virtualcomputer resources according to the example embodiment of FIG. 1;

FIG. 7 a general overview about a billing process for the use of virtualcomputer resources according to an embodiment; and

FIG. 8 an example embodiment of a data processing system for carryingout a method according to an embodiment.

DETAILED DESCRIPTION

In the drawings, like elements are referred to with equal referencenumerals. The drawings are merely schematic representations, notintended to portray specific parameters of aspects of the invention.Moreover, the drawings are intended to depict only typical embodiments,and therefore, should not be considered as limiting the scope of theinvention.

For illustrating an aspect, FIG. 1 depicts a general overview of alicense management system 14 with three virtual machines according to anexample embodiment. FIG. 1 shows a layer 15 with three virtual machines10, the virtual machines 10 being represented by three partitions P1,P2, P3. Each partition P1, P2, P3 has a different number of virtualcomputer resources 20 running. The virtual computer resources 20 in eachpartition P1, P2, P3 are referred to as C0, C1, C2, . . . , and so on.The partitions P1, P2, P3 are connected via a service interface 21 to ahardware/firmware layer 16 of a trusted area of a computer system 212(FIG. 2), which belongs to a trusted part of a computer system 212 wherea license management system 14 (FIG. 1) as a virtual machine instance isimplemented. The unique license management system 14 exhibits twoencrypted records 40 and 42, where the record 40 covers the maximumallowable number of virtual computer resources 20 and the record 42covers the number of virtual computers 20 in use. The maximum number 40is provided to the license management system 14 by an encrypted record22 from the provider of the virtual computer resource 20, for example.These two records 40, 42 cover the sum of all virtual computer resources20 of the virtual machines 10. The managing process according to oneaspect is performed by executing functions 32, 34 in the firmware system16 which are transferring information via the service interface 21 tothe virtual machines 10. These functions 32, 34 cover adding andreleasing processes, respectively, for the virtual computer resources20, for example. There is available for execution a functiongetConnections 32, e.g., which transfers the number of requested virtualcomputer resources 20 as well as the identification of the partition P1,P2, P3 where it is requested as an argument and which gets informationback from the partition P1, P2, P3 about the number of virtual computerresources for this partition P1, P2, P3. If the number is greater thanzero, then the request is fulfilled. If the number is less than zero, itspecifies the number of virtual computer resources, that could not beadded and if the number is zero, no virtual computer resource could beadded. In the FIG. 1, as in the following Figures, the virtual computerresources are named connections. A second function releaseConnections 34is available, e.g., which transfers the number of virtual computerresources 20 that are requested to be released to the partitions P1, P2,P3. It has the same arguments as the function getConnections 32, butgets back the number of the released virtual computer resources 20 oroptionally the number of the remaining virtual computer resources 20.The described two functions 32, 34 are the basis of managing licensinginformation between the three partitions 10 and the license managementsystem 14.

The license management system 14 itself may not only be implemented in ahardware/firmware layer of the computer system 212 (FIG. 2) butgenerally could also be part of a hypervisor, for example. Additionallyit also could be a software instance executed on a logical partition ofa virtual machine.

A virtual computer resource 20 (FIG. 1) may also be associated to aphysical computer resource of the computer system 212 (FIG. 2), suchthat the physical computer resource is used exclusively by the virtualmachine 10. Generally a virtual computer resource 20 (FIG. 1) can atleast be one of the following: a software instance, a logical partition,a data processing unit, a main memory, a network interface, a resourceof a virtual machine 10.

FIG. 2 illustrates a detailed overview of a general license managementsystem based on encrypted records, as for example published in IP.comNumber IPCOM/000219032D entitled “License Management System,” electronicpublication Jun. 18, 2012, which is hereby incorporated herein byreference in its entirety. A license management system of this kind mayserve as a basis for a technique for managing virtual computer resourcesas described by one or more aspects.

A license management system is described that offers an approach basedon encrypted records 22 to control licensing and entitlement for anapplication 72. The system does not need an external licenseverification server, so the computer system 212 that requests to use thelicense does not necessarily need to have an internet connection. Theencrypted record 22 is processed on the computer system 212 without anyadditional requirements from an external resource.

A license key in this license management system consists of a uniqueidentifier and some data associated with this identifier. The data cancontain simple entitled/not entitled information (e.g. is the use of aspecific application x allowed on this system or not), the number andtype of resources allowed (e.g. a specific application y can run on upto five processors and use up to 3 GB of memory), expiration information(e.g. the use of application z is allowed until e.g. Dec. 31, 2012, butnot after this date) and more. By using a ‘Key-Value-Length’ format forthe license key, the exact content of the license keys is transparent tothe license management system. License keys contain encrypted parts thatare created using standard encryption techniques. The keys can come fromvarious sources, e.g. from software or hardware vendors (license sellers1-3 (60) in FIG. 2), and could be limited to a given computer system oroperating system using the system's serial number or some other uniqueidentifier.

The user or a provider may install a license key as an encrypted record22 on the computer system 212. It is possible to install multipleindependent license keys over time. The keys can be loaded via a webinterface, typed in via GUI or taken from media (USB stick, CD, . . . ).

The computer system 212 receives the encrypted license keys 22, decryptsand validates them, step 62, (the validation process can e.g. include acheck that the key is valid for this system serial number, or thatsufficient resources are available in the computer system 212 to run thenewly licensed software, etc.). If decryption and validation from step62 is successful, it stores them in a central secure license repository68 (permanent storage license database). Multiple license keys can bestored in this license repository 68, and individual license keys can beupdated or removed from the repository 68 without affecting the otherlicense keys in the repository 68. The central license repository 68resides in secure storage which is not accessible to the user, isencrypted, step 66, and therefore protected against tampering. This selfcontained license database requires no web server access later on toverify a license.

An application programming interface (API) 70 is provided to querylicense information from the central license database 68. This API 70can be used by applications 72, the operating system (OS) or evenhardware/firmware to determine whether a certain function is allowed, orwhether an application 72 may be loaded and for how long it may be used.The API 70 retrieves license information from the license database 68,decrypts and validates it, step 64, and hands it back to the caller. Thesecure API 70 is protected against manipulation of the results: forexample, the database 68—API 70 communication could be secured bydecryption, step 64, on each API 70 call or secured by a trustedenvironment; or the API 70 call could be secured e.g. by a signature. Inone embodiment, the API 70 is always available, no network access etc.is required. Depending on the results of the API 70 license query, acertain function may be executed on the computer system 212 or not.Meaningful error messages to the user can be generated by the instancethat issued the API 70 license query in case a function is not entitledto run on this computer system 212. In addition, the API 70 licensequery can be issued repeatedly in certain time intervals to determinelicense expiration situations and handle them accordingly.

Thus, the described approach provides a secure, self contained licensemanagement system with a unique defined API 70 for its users.

FIG. 3 shows one example of adding virtual computer resources accordingto the example embodiment of FIG. 1. The function getConnections 32 isissued to add one additional virtual computer resource 20 in partitionP1, starting from the state shown in FIG. 1. As the maximum number ofvirtual computer resources 20 is 10 and the number of virtual computerresources 20 in use is 8, this is a valid request. The request isfulfilled and the answer via the function getConnections 32 is 1. Theencrypted record 24 shows then the actual number of virtual computerresources 20 in use, which is 9.

Further FIG. 4 shows one example of releasing virtual computer resourcesaccording to the example embodiment of FIG. 1. In the example shown arequest to release three virtual computer resources 20 in partition P2is issued via function releaseConnections 34. As the number of number ofvirtual computer resources 20 in use is greater than zero and actuallyis even 4, this is a valid request. The request is fulfilled and thereturn number from function releaseConnections 34 is 3. Therefore theencrypted record 24 shows a number of six virtual computer resources 20in use.

In FIG. 5 another example of adding virtual computer resources accordingto the example embodiment of FIG. 1 is shown. There a request is issuedto add 10 additional virtual computer resources 20 in partition P1. Asactually six virtual computer resources 20 are in use in the partitionsP1, P2, P3, the maximum number of 10 virtual computer resources 20 wouldbe exceeded. Therefore the number of additionally added virtual computerresources 20 in partition P1 is limited to 4. The result of the functiongetConnections 32 is −6, according to the definition of the functiongetConnections 32, given in FIG. 1. The encrypted record 24 shows thenumber of 10 of ten virtual computer resources 20 in use.

Requests for additional virtual computer resources 20 in partition P1,P2, P3 may also be prioritized by the virtual machine instance 14 inorder to manage conflicting requests for a virtual computer resource 20.

FIG. 6 shows one example of sending accounting information about virtualcomputer resources according to the example of FIG. 1. In thisembodiment, a different function SendAccountingInfo 36 collectsaccounting information from all partitions P1, P2, P3 about the usage ofthe virtual computer resources 20 in use. This information istransferred to the license management system 14 and stored in anencrypted record 28, which can then be transmitted to a support element26 in order to be used for accounting management processes as billing,or the like. Such a support element 26 can be such as a laptop, aninternet connection and the like, and serve for information exchangewith firmware or mainframe systems.

In FIG. 7 a general overview about a billing process for the use ofvirtual computer resources according to an embodiment is shown. Billinginformation for using a virtual computer resource, named as feature 52in FIG. 7, is created in a customer hardware/firmware system 16according to the method described above. The bill 54 is then providedwith a bill signature and transferred via internet 48, for example, to aprovider computer system 50. There the bill signature 56 is checkedagainst a provider signature 58 and if validated a bill for using thefeature 52 can be sent to the customer. The customer computer system 16even does not need to be connected to the internet. The transfer processof the billing information to the provider can also be done via USBstick, CD or other media to an external internet connection or directlyto the provider computer system 50.

Referring now to FIG. 8, a schematic of an example of a data processingsystem 210 is shown. Data processing system 210 is only one example of asuitable data processing system and is not intended to suggest anylimitation as to the scope of use or functionality of embodimentsdescribed herein. Regardless, data processing system 210 is capable ofbeing implemented and/or performing any of the functionality set forthherein.

In data processing system 210 there is a computer system/server 212,which is operational with numerous other general purpose or specialpurpose computing system environments or configurations. Examples ofwell-known computing systems, environments, and/or configurations thatmay be suitable for use with computer system/server 212 include, but arenot limited to, personal computer systems, server computer systems, thinclients, thick clients, handheld or laptop devices, multiprocessorsystems, microprocessor-based systems, set top boxes, programmableconsumer electronics, network PCs, minicomputer systems, mainframecomputer systems, and distributed cloud computing environments thatinclude any of the above systems or devices, and the like.

Computer system/server 212 may be described in the general context ofcomputer system executable instructions, such as program modules, beingexecuted by a computer system. Generally, program modules may includeroutines, programs, objects, components, logic, data structures, and soon that perform particular tasks or implement particular abstract datatypes. Computer system/server 212 may be practiced in distributed cloudcomputing environments where tasks are performed by remote processingdevices that are linked through a communications network. In adistributed cloud computing environment, program modules may be locatedin both local and remote computer system storage media including memorystorage devices.

As shown in FIG. 8, computer system/server 212 in data processing system210 is shown in the form of a general-purpose computing device. Thecomponents of computer system/server 212 may include, but are notlimited to, one or more processors or processing units 216, a systemmemory 228, and a bus 218 that couples various system componentsincluding system memory 228 to processor 216.

Bus 218 represents one or more of any of several types of busstructures, including a memory bus or memory controller, a peripheralbus, an accelerated graphics port, and a processor or local bus usingany of a variety of bus architectures. By way of example, and notlimitation, such architectures include Industry Standard Architecture(ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA)bus, Video Electronics Standards Association (VESA) local bus, andPeripheral Component Interconnect (PCI) bus.

Computer system/server 212 typically includes a variety of computersystem readable media. Such media may be any available media that isaccessible by computer system/server 212, and it includes both volatileand non-volatile media, removable and non-removable media.

System memory 228 can include computer system readable media in the formof volatile memory, such as random access memory (RAM) 230 and/or cachememory 232. Computer system/server 212 may further include otherremovable/non-removable, volatile/non-volatile computer system storagemedia. By way of example only, storage system 234 can be provided forreading from and writing to a non-removable, non-volatile magnetic media(not shown and typically called a “hard drive”). Although not shown, amagnetic disk drive for reading from and writing to a removable,non-volatile magnetic disk (e.g., a “floppy disk”), and an optical diskdrive for reading from or writing to a removable, non-volatile opticaldisk such as a CD-ROM, DVD-ROM or other optical media can be provided.In such instances, each can be connected to bus 218 by one or more datamedia interfaces. As will be further depicted and described below,memory 228 may include at least one program product having a set (e.g.,at least one) of program modules that are configured to carry out thefunctions of embodiments of the invention.

Program/utility 240, having a set (at least one) of program modules 242,may be stored in memory 228 by way of example, and not limitation, aswell as an operating system, one or more application programs, otherprogram modules, and program data. Each of the operating system, one ormore application programs, other program modules, and program data orsome combination thereof, may include an implementation of a networkingenvironment. Program modules 242 generally carry out the functionsand/or methodologies of embodiments as described herein. Computersystem/server 212 may also communicate with one or more external devices214 such as a keyboard, a pointing device, a display 224, etc.; one ormore devices that enable a user to interact with computer system/server212; and/or any devices (e.g., network card, modem, etc.) that enablecomputer system/server 212 to communicate with one or more othercomputing devices. Such communication can occur via Input/Output (I/O)interfaces 222. Still yet, computer system/server 212 can communicatewith one or more networks such as a local area network (LAN), a generalwide area network (WAN), and/or a public network (e.g., the Internet)via network adapter 220. As depicted, network adapter 220 communicateswith the other components of computer system/server 212 via bus 218. Itshould be understood that although not shown, other hardware and/orsoftware components could be used in conjunction with computersystem/server 212. Examples, include, but are not limited to: microcode,device drivers, redundant processing units, external disk drive arrays,RAID systems, tape drives, and data archival storage systems, etc.

As described herein, according to one aspect, a method is provided formanaging a virtual computer resource on at least one virtual machine.This management service can be achieved by controlling execution of thevirtual computer resource on the at least one virtual machine by avirtual machine instance, preferably a firmware facility, of a trustedpart of a computer system, the virtual machine instance being unique inthe computer system. A virtual computer resource in this sense coversnot only software aspects, as for example a software license, but alsohardware resources, as memories, processors or the like.

A trusted part of a computer system in this sense covers parts of thehardware and software of a computer system that is delivered with theinstallation of the computer system and cannot be changed by the user.In one embodiment, the trusted part of the computer system part mayinclude one or more of: the hardware, the firmware, a hypervisor and theoperating system of the computer system. Using trusted computingdesigns, the trusted part might also be part of an operating system.This environment represents the trusted part of the computer system andensures the user to be able to work in a secure and certified way. Atrusted environment even extends to cloud computing features of acomputing solution.

The virtual machine instance, which may be implemented on a firmwarelayer of a computer system favorably trusted, can be, in a generalsense, a central software instance for other virtual machines or thesoftware running on top of those to manage shared information likeresource pools. Thus, it is possible to share information, e.g. countsfor the use of a certain software package, between virtual machines inorder to establish a secure licensing management system. In the same wayit is possible to limit the maximum count of software usage of a certainpackage up to a limited count, paid for by a user. The virtual machineinstance may administrate the usage of a virtual computer resource, likea software package, a network connection, a CPU, any hardware resourceby an efficient licensing system. Further, such a virtual machineinstance may even be able to manage the temporal aspect of a resourceusage by giving a time interval for usage, providing an expiration date,limiting the time wise usage of a license or administrate billinginformation for the limited usage of any virtual computer resource. Sucha method enables the management of a feature or virtual computerresource on demand, which means, that the requested feature or virtualcomputer resource, like a license or a hardware resource, e.g., may beprovided on request for a limited number of resources and/or for alimited time interval. By this way it is possible to control the usageof a virtual computer resource in a very efficient and secure way.

This method is also adapted to handle different virtual computerresources by the same virtual machine instance, as the different virtualcomputer resources do not necessarily interact with each other. Moreoverthey can be handled completely in a separate way such that one virtualcomputer resource has no information about other resources which meansthat the user also has no information about the usage of the same orother virtual computer resources by other users. Thus, information aboutthe usage of different virtual computer resources may be handled on astrictly confidential basis, a commercially very important aspect.

In one embodiment, there is only one virtual machine instance handlingall the managing information on a computer system. Virtual machineinstance in the sense used in this description means specifically avirtual machine resource management layer, and not only a logicalpartition, for example. This unique aspect may also contributedecisively to an efficient and secure way of administrating licensingand/or billing information about virtual computer resources.

In one aspect, the method comprises the following steps of (i) providingthe virtual machine instance as an interface between the trusted part ofthe computer system and the at least one virtual machine, (ii) providinga maximum number of virtual computer resources being available on thecomputer system for the at least one virtual machine, (iii) providing anactual number of virtual computer resources currently in use on the atleast one virtual machine, (iv) providing a first comparison result bycomparing the maximum number of virtual computer resources to the actualnumber of virtual computer resources currently in use, (v) providing asecond comparison result by comparing the first comparison result to thenumber of requested virtual computer resources, and (vi) deciding onadding or not adding one or more of the requested virtual computerresources depending on the second comparison result. Thus, it ispossible to manage a limited number of maximal usable virtual computerresources being in a resource pool by providing the relevant informationabout the limiting numbers or counts of licenses, e.g., and then addingor releasing numbers of virtual computer resources as requested by auser and allowed by a provider of such virtual computer resources.Providing a maximum number of virtual computer resources in this sensemay be specifically not only an absolute number of virtual computerresources, but also providing a timeframe or a date where a specificnumber of virtual computer resources may be used.

In one aspect, if a virtual computer resource is requested by thevirtual machine instance and the actual number of virtual computerresources currently in use is less than the maximum number of virtualcomputer resources, a virtual computer resource may be added dynamicallyduring virtual machine execution. The method thus allows the managementof virtual computer resources in a very efficient way during executionof other resources like other virtual machines of the computer systemwithout any hindering of the running system.

The same advantage holds, if a virtual computer resource is requested bythe virtual machine instance to be released and the actual number ofvirtual computer resources currently in use is greater than zero. Then avirtual computer resource may be released dynamically during virtualmachine execution without disturbing the current execution of othervirtual machine activities on the computer system.

In embodiments, as mentioned above, the virtual machine instance may beimplemented on one of a hypervisor, a firmware layer, or a hardwarelayer of the computer system. As long as the virtual machine instancelies in the trusted part of a computer system, all the advantages of asecure way of handling managing information about usage of the virtualcomputer resources hold.

Thus, the virtual machine instance is adapted to be implemented as alicense management system of the computer system, because it is possibleto manage all necessary information like counts of usage, time of usage,maximum count of licenses by such a virtual machine instance in anefficient and secure way to handle.

In one aspect, the virtual computer resource may be a software instanceexecuted on a logical partition of a virtual machine. The describedfeature of on demand service of one aspect is adapted to act as acentral instance for managing shared information between differentpartitions of one or more virtual machines.

In one embodiment, said method further comprises the following steps of(i) fetching a maximum number of available computer resources from thevirtual machine instance, (ii) in case of requesting a virtual computerresource and the actual number of used virtual computer resources beingless than the maximum number of virtual computer resources, setting arequest for the virtual computer resource to the virtual machineinstance and receiving a number of available virtual computer resources,and (iii) in case of requesting a virtual computer resource to bereleased and the actual number of virtual computer resources currentlyin use being greater than zero, setting a request for releasing thevirtual computer resource to the virtual machine instance and receivinga number of released virtual computer resources. By this way it isensured that the allowed number of virtual computer resources is notexceeded and that on the other hand the user always gets feedbackinformation about the status of the action the user requested thus beingable to continue or change the execution of the virtual computerresources.

In one aspect, the virtual computer resource may also be associated to aphysical computer resource of the computer system, such that thephysical computer resource is used exclusively by the virtual machine.The described aspect is in the same way able to cover requests forphysical computer resources, for example hardware devices like networkconnections, CPUs, storage devices or the like.

Particularly, a virtual computer resource may at least be one of thefollowing: a software instance, a logical partition, a data processingunit, a main memory, a network interface, a resource of a virtualmachine.

A further aspect of the described technique is that a request for avirtual computer resource may be prioritized by the virtual machineinstance in order to manage conflicting requests for a virtual computerresource. Thus, a specific virtual machine or a specific user may beserved with higher priority than other virtual machines or users, forexample, because they are suited to handle tasks with higher prioritythan others or because they have to serve production systems or thelike.

One aspect is that accounting data for a virtual computer resource maybe managed by the virtual machine instance. As the virtual machineinstance may be implemented as part of a licensing management system foradministrating software licenses for example, the managing of accountingdata is a major task for such a system and one of the premises for abilling system.

Therefore, the virtual machine instance may also be realized as abilling system for the use of the virtual computer resources, because itis able to handle all the necessary accounting and usage information.

These information data may be transferred in a secure way to a providerof the virtual computer resources used, verified that the transmissionhas taken place and serve as a basis for billing the use of the virtualcomputer resource.

Such a billing system may be implemented in the trusted part of acomputer system, because obviously information about usage and billingare confidential data and separated from public information access.

According to further aspects, a data processing program for execution ina data processing system comprises an implementation of an instructionset for performing a method as described herein when the data processingprogram is run on a computer.

Further, a computer program product comprises a computer usable mediumincluding a computer readable program, wherein the computer readableprogram when executed on a computer causes the computer to perform amethod comprising the steps of (i) providing the virtual machineinstance as an interface between the trusted part of the computer systemand the at least one virtual machine, (ii) providing a maximum number ofvirtual computer resources being available on the computer system forthe at least one virtual machine, (iii) providing an actual number ofvirtual computer resources currently in use on the at least one virtualmachine, (iv) providing a first comparison result by comparing themaximum number of virtual computer resources to the actual number ofvirtual computer resources currently in use, (v) providing a secondcomparison result by comparing the first comparison result to the numberof requested virtual computer resources, and (vi) deciding on adding ornot adding one or more of the requested virtual computer resourcesdepending on the second comparison result.

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”

Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Rash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain, or store a programfor use by or in connection with an instruction execution system,apparatus, or device. A computer readable signal medium may include apropagated data signal with computer readable program code embodiedtherein, for example, in baseband or as part of a carrier wave. Such apropagated signal may take any of a variety of forms, including, but notlimited to, electro-magnetic, optical, or any suitable combinationthereof. A computer readable signal medium may be any computer readablemedium that is not a computer readable storage medium and that cancommunicate, propagate, or transport a program for use by or inconnection with an instruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present invention are described herein with reference toblock diagrams of methods, apparatus (systems) and computer programproducts according to embodiments of the invention. It will beunderstood that each block of the flowchart illustrations and/or blockdiagrams, and combinations of blocks in the block diagrams, can beimplemented by computer program instructions. These computer programinstructions may be provided to a processor of a general purposecomputer, special purpose computer, or other programmable dataprocessing apparatus to produce a machine, such that the instructions,which execute via the processor of the computer or other programmabledata processing apparatus, create means for implementing thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the block diagram block orblocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the block diagram block orblocks.

In a further aspect, a data processing system for execution of a dataprocessing program is provided, comprising software code portions forperforming a method described herein.

The block diagrams in the figures illustrate the architecture,functionality, and operation of possible implementations of systems,methods and computer program products according to various embodiments.In this regard, each block in the block diagrams may represent a module,segment, or portion of code, which comprises one or more executableinstructions for implementing the specified logical functions. It shouldalso be noted that, in some alternative implementations, the functionsnoted in the block may occur out of the order noted in the figures. Forexample, two blocks shown in succession may, in fact, be executedsubstantially concurrently, or the blocks may sometimes be executed inthe reverse order, depending upon the functionality involved. It willalso be noted that each block of the block diagrams, and combinations ofblocks in the block diagrams, can be implemented by special purposehardware-based systems that perform the specified functions or acts, orcombinations of special purpose hardware and computer instructions.

What is claimed is:
 1. A computer program product for managing virtualcomputer resources on at least one virtual machine of a computer system,the computer program product comprising: a computer readable storagemedium readable by a processing circuit and storing instructions forexecution by the processing circuit for performing a method comprising:obtaining, by a virtual machine instance in a trusted part of thecomputer system, an indication of a virtual computer resource to becontrolled, wherein the indication identifies the virtual computerresource; controlling execution of the virtual computer resource on theat least one virtual machine by a virtual machine instance, the virtualmachine instance being unique in the computer system, wherein the atleast one virtual machine is not in the trusted part of the computersystem; providing, using the virtual machine instance as an interface,communication between the trusted part of the computer system and the atleast one virtual machine; providing, in an encrypted record in thetrusted part of the computer system, a maximum number of virtualcomputer resources being available on the computer system for the atleast one virtual machine, wherein the encrypted record was provided tothe trusted part of the computer system by a provider of the virtualcomputer resource; providing, by the provider of the virtual machineresource, in the encrypted record, an actual number of virtual computerresources currently in use on the at least one virtual machine;providing, by the virtual machine instance, a first comparison result bycomparing the maximum number of virtual computer resources to the actualnumber of virtual computer resources currently in use; providing, by thevirtual machine instance, a second comparison result by comparing thefirst comparison result to a number of requested virtual computerresources; and performing an action selected from the group consistingof: based on the second comparison result, allocating, by the virtualmachine instance, one or more requested virtual computer resources tothe at least one virtual machine; and based on the second comparisonresult, denying allocating, by the virtual machine instance, the one ormore requested virtual computer resources to the at least one virtualmachine.
 2. The computer program product of claim 1, wherein based on arequested virtual computer resource being requested by the virtualmachine instance and the actual number of virtual computer resourcescurrently in use being less than the maximum number of virtual computerresources, adding the requested virtual computer resource dynamicallyduring virtual machine execution.
 3. The computer program product ofclaim 1, wherein based on a selected virtual computer resource beingrequested by the virtual machine instance to be released and the actualnumber of virtual computer resources currently in use being greater thanzero, releasing the selected virtual computer resource dynamicallyduring virtual machine execution.
 4. The computer program product ofclaim 1, wherein the virtual machine instance is implemented on ahypervisor, a firmware layer, a hardware layer of the computer system ora combination thereof.
 5. The computer program product of claim 1,wherein the virtual machine instance is a license management system ofthe computer system.
 6. The computer program product of claim 1, whereinthe virtual computer resource is at least one of the following: asoftware instance, a logical partition, a data processing unit, a mainmemory, a network interface, a resource of a virtual machine, or asoftware instance executed on a logical partition of a virtual machine.7. The computer program product of claim 1, the method furthercomprising: fetching the maximum number of available computer resourcesfrom the virtual machine instance; based on requesting the virtualcomputer resource and the actual number of used virtual computerresources being less than the maximum number of available computerresources, setting a request for the virtual computer resource to thevirtual machine instance and receiving a number of available virtualcomputer resources; and based on requesting the virtual computerresource to be released and the actual number of virtual computerresources currently in use being greater than zero, setting a requestfor releasing the virtual computer resource to the virtual machineinstance and receiving a number of released virtual computer resources.8. The computer program product of claim 1, wherein the virtual computerresource is associated to a physical computer resource of the computersystem, such that the physical computer resource is used exclusively bythe virtual machine.
 9. The computer program product of claim 1, whereina request for a virtual computer resource is prioritized by the virtualmachine instance in order to manage conflicting requests for the virtualcomputer resource.
 10. The computer program product of claim 1, whereinaccounting data for the virtual computer resource is managed by thevirtual machine instance.
 11. The computer program product of claim 1,wherein the virtual machine instance is realized as a billing system forthe use of virtual computer resources.
 12. The computer program productof claim 11, wherein billing information is securely transmitted to aresource provider and verified that the transmission has taken place.13. The computer program product of claim 13, wherein the resourceprovider is implemented in the trusted part of the computer system. 14.The computer program product of claim 1, the performing an actioncomprising allocating the one or more requested virtual computerresources, based on the second comparison result, wherein the secondcomparison result indicates that the number of requested resources isless than the difference of the maximum number of virtual computerresources and the actual number of virtual computer resources currentlyin use.
 15. A computer system for managing virtual computer resources onat least one virtual machine of a computer system, the computer systemcomprising: a memory; and a processor in communications with the memory,wherein the computer system is configured to perform a method, saidmethod comprising: obtaining, by a virtual machine instance in a trustedpart of the computer system, an indication of a virtual computerresource to be controlled, wherein the indication identifies the virtualcomputer resource; controlling execution of the virtual computerresource on the at least one virtual machine by a virtual machineinstance, the virtual machine instance being unique in the computersystem, wherein the at least one virtual machine is not in the trustedpart of the computer system; providing, using the virtual machineinstance as an interface, communication between the trusted part of thecomputer system and the at least one virtual machine; providing, in anencrypted record in the trusted part of the computer system, a maximumnumber of virtual computer resources being available on the computersystem for the at least one virtual machine, wherein the encryptedrecord was provided to the trusted part of the computer system by aprovider of the virtual computer resource; providing, by the provider ofthe virtual machine resource, in the encrypted record, an actual numberof virtual computer resources currently in use on the at least onevirtual machine; providing, by the virtual machine instance, a firstcomparison result by comparing the maximum number of virtual computerresources to the actual number of virtual computer resources currentlyin use; providing, by the virtual machine instance, a second comparisonresult by comparing the first comparison result to a number of requestedvirtual computer resources; and performing an action selected from thegroup consisting of: based on the second comparison result, allocating,by the virtual machine instance, one or more requested virtual computerresources to the at least one virtual machine; and based on the secondcomparison result, denying allocating, by the virtual machine instance,the one or more requested virtual computer resources to the at least onevirtual machine.
 16. The computer system of claim 15, wherein based on aselected virtual computer resource being requested by the virtualmachine instance to be released and the actual number of virtualcomputer resources currently in use being greater than zero, releasingthe selected virtual computer resource dynamically during virtualmachine execution.
 17. The computer system of claim 15, wherein thevirtual machine instance is implemented on a hypervisor, a firmwarelayer, a hardware layer of the computer system or a combination thereofand wherein the virtual machine instance is a license management systemof the computer system.
 18. The system of claim 15, wherein the virtualcomputer resource is at least one of the following: a software instance,a logical partition, a data processing unit, a main memory, a networkinterface, a resource of a virtual machine, or a software instanceexecuted on a logical partition of a virtual machine.
 19. The system ofclaim 15, the performing an action comprising allocating the one or morerequested virtual computer resources, based on the second comparisonresult, wherein the second comparison result indicates that the numberof requested resources is less than the difference of the maximum numberof virtual computer resources and the actual number of virtual computerresources currently in use.
 20. The computer system of claim 15, themethod further comprising: fetching the maximum number of availablecomputer resources from the virtual machine instance; based onrequesting the virtual computer resource and the actual number of usedvirtual computer resources being less than the maximum number ofavailable computer resources, setting a request for the virtual computerresource to the virtual machine instance and receiving a number ofavailable virtual computer resources; and based on requesting thevirtual computer resource to be released and the actual number ofvirtual computer resources currently in use being greater than zero,setting a request for releasing the virtual computer resource to thevirtual machine instance and receiving a number of released virtualcomputer resources.